package com.wb.code09集合;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

/**
 * @author 黄衡熙
 * @version 1.0
 */
public class Test05_遍历方式 {
    public static void main(String[] args) {
        test03();
    }
    public static void test01() {
        List<String> list = new ArrayList<>(Arrays.asList("admin", "jack", "tom", "lucy"));
        // 升序遍历
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i) + "\t");
        }
        System.out.println("\n" + list);
        // 降序遍历
        // 1-->3    lucy
        // 2-->2    tom
        // 3-->1    tom
        // 4-->0    lucy
        for (int i = list.size() - 1; i >= 0; i--) {
            if (i == 1) {
                list.remove(1);
            }
            if (i == 2) {
                list.add("alice");
            }
            System.out.print(list.get(i) + "\t");
        }
        System.out.println("\n" + list);
    }

    public static void test02() {
        List<String> list = new ArrayList<>(Arrays.asList("admin", "jack", "tom", "lucy"));
        for (String s : list) {
            if (s.equals("admin")) {
//                list.remove(s);
//                list.add("aaa");
                list.set(1, "aaa");
            }
            System.out.println(s);
        }
    }

    public static void test03() {
        List<Integer> list = new ArrayList<>(Arrays.asList(1, 4, 6, 7, 8, 9, 10));
        System.out.println(list);
        // 创建Iterator迭代器
        Iterator<Integer> it = list.iterator();
        // 读取迭代器中的元素
        // 判断迭代器中是否存在下一个元素,如果存在,可以读取
        while (it.hasNext()) {
            // 取出下一个元素
            Integer num = it.next();
//            System.out.println(num);
            if (num == 6) {
                // 在Iterator中同样不能添加与删除集合中的元素
                // list.remove(num);
                // 但是,可以删除迭代器中的元素
                // 删除当前迭代器中正在迭代的元素
                // 当元素在迭代器中删除之后,集合中的元素会同步删除
                it.remove();
            }
        }
        System.out.println(list);
    }
}
